home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Day Cry
/
Day Cry CD.bin
/
oh_towns
/
ein
/
sources
/
loadsrc.lzh
/
LOAD
/
MAIN.C
< prev
next >
Wrap
C/C++ Source or Header
|
1994-09-05
|
18KB
|
627 lines
/*<Header>==============================================================
*
* òëë╫ò\Ī / "MAIN.C"
*
* [ EIN(tm) project : âTâôâvâïâvâìâOâëâÇ ]
*
* COPYRIGHT Nam 1994, All rights reserved.
*
* özòtüEægì₧üEëⁿò╧üEÅñùÿùpé╖é╫é─Ä⌐ùRüBé╜é╛é╡û│ò█Å╪é┴é╖
*
*-----------------------------------------------------------------------
* V1.0L01â┐ 94.07.19/Nam âvâìâgâ^âCâv
* V1.0L30 94.07.21/Nam EIN(TM)î÷èJö┼
* V1.0L31 94.09.05/Nam GM_QUITÄ₧é╔Ä⌐ò¬é┼WINDOWé≡Å┴ïÄ
*</Header>==============================================================*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <snd.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
#include <egb.h>
//#include <file_dlg.h>
//#include <tifflib.h>
#include <msdos.cf>
#include <loader.h>
#include <math.h>
#include <io.h>
#include <guidbg.h>
//#include <wgb.h>
// üª é▒é▒é▄é┼é¬ò╜ï╧ôIé╔Ägùpé│éΩéΘâwâbâ_
#include <mos.h> // é▒é╠âTâôâvâïé┼é╠é▌òKùv(MOS_getTimeé╠ê╫)
#include "..\ein\eintm.h" // EIN(TM)è╓ÿAâëâCâuâëâèé╠âwâbâ_
extern unsigned char ICON02[]; // âAâCâRâôâpâ^ü[âô
#define ERROR (-1)
#define PSET (0)
#define DISPMODE_ICON (0)
#define DISPMODE_PANEL (1)
#define pattBuf (&ICON02[4]) // âpâ^ü[âôÅæè╖éªùpâÅü[âNâGâèâA
#define ID_ICONBASE (0) // âAâCâRâôòöòié╠âxü[âXid
#define ID_ICONPAT (1) // âAâCâRâôòöòié╠id
#define ID_NUMGET (5) // ÉöÆlôⁿù═BOXé╠id
int ID_ICON[2]; // âAâCâRâôòöòié╠ID
int ID_PANEL[6]; // âpâlâïòöòié╠ID
int dispMode = 0; // 0:icon / 1:win
/*= âèâWâàü[âÇùpÉ▌ÆΦ=================================================*/
unsigned int RSM_INT = 50*3;
FRAME RSM_ICONFR;
char RSMID[]="%%% LOAD icon %%%";
char RSMTITLE[]="òëë╫ò\Ī V0.1 L31";
/*===================================================================*/
//char pattBuf[2*32]; // âpâ^ü[âôÅæè╖éªùpâÅü[âNâGâèâA
int updateFlag = NOERR; // ëµû╩ìXÉVÆåé⌐ö█é⌐é≡Īé╖âtâëâO
unsigned int loadInt = 50*3; // òëë╫îvæ¬è╘èu(20msÆPê╩)
unsigned int loadMin = 3; // ì┼żòëë╫è╘èu(20msÆPê╩)
unsigned int loadBfr = 0; // æOë±îvæ¬Ä₧è╘(20msÆPê╩)
char *GV_egbWork ;
int GV_apliLot ;
void ( *GV_defIdleTask )() ;
char *guiEgbPtr ; // EGB é╠âÅü[âNâAâhâîâX
MMICTRL mmic = {
SCREEN16 | SCREENIGNORE, // resolution
SCREENUNUSED,
0, SCREENAVAILABLE, 0, // write_page,display_page,priority
SCREENAVAILABLE, // mode
SCREENEXPAND, // vram_x
0,0,0,0, // size,*ptr,asize,*atpr
0,0,0,0, // frame
-32767, // move
-32767,
32767,
32767,
15,8,7,15 // color
} ;
/*===================================================================*/
/* âüâCâôâïü[âv */
/*===================================================================*/
void main()
{
extern int APL_init() ;
int kobj;
// Åëè·ë╗Åêù¥
if (MMI_Open( &mmic ) == NOERR){
// ô±ÅdïNô«é╠check
if ( (kobj = MMI_CallMessage( MMI_GetApliId(), GM_QUERYID, QM_KIND, 1)) > NOERR ){
MMI_CallMessage( MMI_GetApliId(), GM_SWITCH, FALSE, kobj );
} else {
// âAâCâhâïâ^âXâNé╔ôoÿ^
setIdleTask();
// Åëè·ë╗é╔ɼî≈é╖éΩé╬âüâCâôâïü[âvé╔
if ( APL_init()==NOERR ){
// û│òëë╫Ä₧é╠âCâôâ^ü[âoâïé≡îvæ¬
initInterval();
// âüâCâôâïü[âv
MMI_ExecSystem();
}
// âAâCâhâïé╠ë≡Å£
resetIdleTask();
// âEâBâôâhâDÅ┴ïÄ(üªSHELLé╔Å┴ïÄé│é╣éΘé╞Æxéóé╠é┼)
eraseWin();
}
}
// ÅIù╣Åêù¥
MMI_Close() ;
}
/*===================================================================*/
/* Åëè·ë╗Åêù¥ */
/*===================================================================*/
int APL_init()
{
extern MMIINIT initDataRES_ICON ;
extern MMIINIT initDataRES_PANL ;
extern int ICONmaxId;
extern unsigned char *ICONTbl[];
extern int userFunc();
extern int initMemRes();
HYPER hyp;
register int ret ;
// EGBâÅü[âNâAâhâîâXĵô╛/âìü[âJâïâÅü[âNé╔âRâsü[/ë╝æzëµû╩Åεò±ìXÉV
if ( (ret = initMemRes()) != NOERR ){
return ret;
}
// GUIòöòié╠Åëè·ë╗
if ((ret = MMI_initHyper()) < 0) // ânâCâpü[î^
return ret;
if ((ret = MMI_initDialogL40()) < 0) // â_âCâAâìâOî^
return ret;
if ((ret = MMI_initWindowL40()) < 0) // âEâBâôâhâEî^
return ret;
if ((ret = MMI_initMessageL40()) < 0) // âüâbâZü[âWî^
return ret;
if ((ret = MMI_initButtonL40()) < 0) // â{â^âôî^
return ret;
if ((ret = MMI_initDrawButtonL40()) < 0) // âhâìâEâ{â^âôî^
return ret;
if ((ret = MMI_initIconL40()) < 0) // âAâCâRâôî^
return ret;
if ((ret = MMI_initNumBoxL40()) < 0) // ÉöÆlôⁿù═boxî^
return ret;
// âèâ\ü[âXé≡ôoÿ^
if ((ret = MMI_Init(&initDataRES_ICON)) < 0)
return ret ;
if ((ret = MMI_Init(&initDataRES_PANL)) < 0)
return ret ;
// âåü[âUâAâCâRâôé≡ôoÿ^
MMI_SetIconTable( ICONTbl, ICONmaxId ) ;
// GUIÉFé≡âüâjâàü[ÉFé╔É▌ÆΦ
EIN_initGuiColor();
// âEâBâôâhâEù▐é≡âxü[âXòöòié╔ATTACH
MMI_SendMessage( ID_ICON[0], MM_ATTACH, 1, MMI_GetBaseObj() ) ;
// âXâCâbâ`ââü[æ╬ë₧è╓Éöé╠ôoÿ^
MMI_SendMessage( MMI_GetBaseObj(), MM_SETEXEC, 1, userFunc ) ;
// â^âXâNâèâXâgé╔â^âCâgâïé≡ôoÿ^
MMI_CallMessage( MMI_GetApliId(), GM_TITLE, (int)RSMTITLE, 0 ) ;
/*----------------------------------------------------------------*/
/* âèâWâàü[âÇô╟é▌ì₧é▌ (üªé╠é┬éóé╜Åêù¥é═òKé╕ìsé┴é─é¡é╛é│éó) */
/*----------------------------------------------------------------*/
char work[RSMWORKSIZE]; // âèâWâàü[âÇâ}âlü[âWââé╠âÅü[âNâGâèâA
char buf[1024];
char *ptr;
int size, x, y, z;
// üªâèâWâàü[âÇâ}âlü[âWââé╠Åëè·ë╗(âAâvâèé╠IDâ^âOôoÿ^)
EIN_rsmInit( work, RSMID );
// üªô╟é▌ì₧é▌âoâbâtâ@É▌ÆΦ
EIN_rsmBufSet( work, buf, 1023 );
// üªâèâWâàü[âÇÅεò±ô╟é▌ì₧é▌
size = EIN_rsmLoad( work );
#ifdef DEBUG
printf(" resume size(%d)\n",size);
#endif
if ( size > 0 ){
// ICONò\Īê╩Æu
if ( ((ptr = strstr(buf,"\nICON: ")) != NULL ) &&
(sscanf(ptr,"\nICON: %d %d INTERVAL: %d\n", &x, &y, &z) > 2 ) ){
// ÿgì└òWé≡ô╛éΘ
MMI_SendMessage( ID_ICON[0], MM_GETHYPER, 1, &hyp );
RSM_ICONFR.lupx = x;
RSM_ICONFR.lupy = y;
RSM_ICONFR.rdwx = x+(hyp.fr.rdwx-hyp.fr.lupx);
RSM_ICONFR.rdwy = y+(hyp.fr.rdwy-hyp.fr.lupy);
#ifdef DEBUG
printf("ICON: move to (%d,%d)\n", x, y);
#endif
if ( x<-31 ){
x=0;
}
if ( y<-31 ){
y=0;
}
MMI_SendMessage( ID_ICON[0], MM_MOVE, 1, &RSM_ICONFR );
// îvæ¬è╘èué≡É▌ÆΦ
if ( z>0 && z<601 ){
loadInt = z * (1000/20); // /òbü¿/20msò╧è╖
RSM_INT = loadInt;
}
}
} else {
#ifdef DEBUG
printf("Can't find resume file.\n");
#endif
}
// öwîié≡ò\Ī
MMI_SendMessage( MMI_GetBaseObj(), MM_SHOW, 0 ) ;
return NOERR ;
}
/*===================================================================*/
/* âèâWâàü[âÇÅεò±ìXÉV (üªé¬é┬éóé╜Åêù¥é═òKé╕ìsé┴é─ë║é│éó) */
/*===================================================================*/
void SaveResumeFile()
{
char work[RSMWORKSIZE];
char buf[1024];
char aplpath[128];
HYPER hyp1;
register int ret;
// ÿgì└òWé≡ô╛éΘ
MMI_SendMessage( ID_ICON[0], MM_GETHYPER, 1, &hyp1 );
// ê┌ô«é╡é─éóé╜éτâZü[âu
if ( (RSM_INT != loadInt ) ||
(RSM_ICONFR.lupx != hyp1.fr.lupx) ||
(RSM_ICONFR.lupy != hyp1.fr.lupy) ){
// üªâ}âlü[âWââÅëè·ë╗
EIN_rsmInit( work, RSMID );
// üªâoâbâtâ@É▌ÆΦ(âAâvâèÄ»ò╩ID,ìXÉVÄ₧ìÅé═Ä⌐ô«É▌ÆΦé│éΩé▄é╖)
EIN_rsmBufSet( work, buf, 1023 );
// üªâAâvâèâfâBâîâNâgâèò█æ╢
MMI_CallMessage( MMI_GetApliId(), GM_QUERYID, QM_PATH, (int)aplpath );
EIN_rsmBufPrintf( work, "APLPATH: %s", aplpath );
// üªâAâvâèû╝ò█æ╢
EIN_rsmBufPrintf( work, "TITLE: %s", RSMTITLE );
// üªâRâüâôâgò█æ╢
EIN_rsmBufCat( work, "COMMENT: âVâFâïâ^âXâNé╠òëë╫ò\Īé┼é╖üB");
// âAâCâRâôê╩Æué╞îvæ¬è╘èuò█æ╢
EIN_rsmBufPrintf( work, "ICON: %d %d INTERVAL: %d", hyp1.fr.lupx, hyp1.fr.lupy, loadInt/(1000/20) );
// üªâoâbâtâ@ÅIÆ[(^A)É▌ÆΦ
EIN_rsmBufTail( work );
// üªâoâbâtâ@é≡âZü[âu
ret = EIN_rsmSave( work );
#ifdef DEBUG
printf(" resume save size(%d) ptr:(%d,%d)\n",ret, hyp.fr.lupx, hyp.fr.lupy);
#endif
RSM_ICONFR.lupx = hy